#ifndef __CTRL_KEY_H__
#define __CTRL_KEY_H__

#include "all.h"

#define SW1_IO_LEVEL                PORT7.PIDR.BIT.B0
#define SW2_IO_LEVEL                PORT3.PIDR.BIT.B3

#define SW1_IO_LEVEL_PRESSED        0
#define SW1_IO_LEVEL_RELEASE        1

#define SW2_IO_LEVEL_PRESSED        0
#define SW2_IO_LEVEL_RELEASE        1

#define IS_SW1_PRESSED              (SW1_IO_LEVEL_PRESSED == SW1_IO_LEVEL)
#define IS_SW1_RELEASED             (SW1_IO_LEVEL_RELEASE == SW1_IO_LEVEL)

#define IS_SW2_PRESSED              (SW2_IO_LEVEL_PRESSED == SW2_IO_LEVEL)
#define IS_SW2_RELEASED             (SW2_IO_LEVEL_RELEASE == SW2_IO_LEVEL)

// 控制板按键识别
typedef enum
{
    SW1,         // 0
    SW2,         // 1

    Key_Num,    // 2
}KeyID_t;

// 按键状态
typedef enum
{
    Key_Release = 0,        // 按键状态：被释放
    Key_Pressed,            // 按键状态：被按下
}Key_Status_t;

// 按键数据类型
typedef struct
{
    Key_Status_t PowerOn;    // 上电时的状态
    Key_Status_t Current;    // 当前时刻状态
}Key_t;

// 按键数据(状态)
extern Key_t Key[Key_Num];  // 按键状态数据

extern YesNo_t StartUnlock_By_Key;              // 是否按下一键启动按键

extern void Update_Key_Value(void);             // 更新按键当前状态
extern void Update_Key_PowerOn_Value(void);     // 更新按键上电初始状态
extern void Unlock_FMU_By_Key_Handle(void);     // 一键启动解锁飞控处理

#endif  // __CTRL_KEY_H__


